home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src890906.arc / PROC.H < prev    next >
C/C++ Source or Header  |  1989-09-07  |  2KB  |  63 lines

  1. #ifndef    PHASH
  2.  
  3. #include <setjmp.h>
  4. #include "timer.h"
  5.  
  6. /* Kernel process control block */
  7. #define    PHASH    17        /* Number of wait table hash chains */
  8. struct proc {
  9.     struct proc *prev;    /* Process table pointers */
  10.     struct proc *next;    
  11.  
  12.     jmp_buf env;        /* Process state */
  13.     char i_state;        /* Process interrupt state */
  14.  
  15.     unsigned short state;
  16. #define    READY    0
  17. #define    WAITING    1
  18. #define    SUSPEND    2
  19.     void *event;        /* Wait event */
  20.     int16 *stack;        /* Process stack */
  21.     unsigned stksize;    /* Size of same */
  22.     char *name;        /* Arbitrary user-assigned name */
  23.     int retval;        /* Return value from next pwait() */
  24.     struct timer alarm;    /* Alarm clock timer */
  25. };
  26. #define NULLPROC (struct proc *)0
  27. extern struct proc *Waittab[];    /* Head of wait list */
  28. extern struct proc *Rdytab;    /* Head of ready list */
  29. extern struct proc *Curproc;    /* Currently running process */
  30. extern struct proc *Susptab;    /* Suspended processes */
  31. extern int Stkchk;        /* Stack checking flag */
  32.  
  33. /* In  kernel.c: */
  34. void alert __ARGS((struct proc *pp,int val));
  35. void chname __ARGS((struct proc *pp,char *newname));
  36. void killproc __ARGS((struct proc *pp));
  37. void killself __ARGS((void));
  38. struct proc *mainproc __ARGS((char *name));
  39. struct proc *newproc __ARGS((char *name,unsigned int stksize,
  40.     void (*pc) __ARGS((int,void *,void *)),
  41.     int iarg,void *parg1,void *parg2));
  42. void psignal __ARGS((void *event,int n));
  43. int pwait __ARGS((void *event));
  44. void resume __ARGS((struct proc *pp));
  45. void suspend __ARGS((struct proc *pp));
  46.  
  47. /* In ksubr.c: */
  48. void chkstk __ARGS((void));
  49. void kinit __ARGS((void));
  50. void psetup __ARGS((struct proc *pp,int iarg,void *parg1,void *parg2,
  51.     void  __ARGS(((*pc) __ARGS((int,void *,void *)) )) ));
  52. #ifdef    AMIGA
  53. void init_psetup __ARGS((struct proc *pp));
  54. #endif
  55.  
  56. /* Stack background fill value for high water mark checking */
  57. #define    STACKPAT    0x55aa
  58.  
  59. /* Value stashed in location 0 to detect null pointer dereferences */
  60. #define    NULLPAT        0xdead
  61.  
  62. #endif    /* PHASH */
  63.